The field of single-chip, large scale integration (LSI) microprocessors is advancing at an incredible rate. Progress in the underlying semiconductor technology, MOS, is driving the advance. Every two years, circuit densities are improving by a factor of 2, circuit speeds are increasing by a factor of 2, and at the same time speed-power products are decreasing by a factor of 4. Finally, yield enhancement techniques are driving down production costs and hence product prices, thereby increasing demand and opening up new applications and markets.
One effect of this progress in semiconductor technology is advancement in LSI microprocessors. The latest generation, currently being introduced by several companies, is an order of magnitude more powerful than the previous generation, the 8-bit microprocessors of three or four years ago. The new microprocessors have 16-bit data paths and arithmetic capability. They directly address multiple-megabyte memories. In terms of functional capability and speed, they will outperform all but the high end models of current 16-bit minicomputers.
A particular data processor, which incorporates the present invention, supports an instruction set which consists of general single and dual operand instructions involving byte (8 bits), word (16 bits) or double word operands. Operations are generally memory-to-register, register-to-memory, or register-to-register. In addition to standard instructions such as add, compare, and shift, this particular data processor is designed to support such instructions as load and store multiple registers, multiply and divide, and various forms of bit manipulation. The data processor provides eight 32-bit address manipulation registers and eight 32-bit data manipulation registers. Address registers allow 16-bit and 32-bit operations, and data registers allow 8-, 16-, and 32-bit operations. All address and data registers are accessible to the programmer. In addition, there is a program counter with limited user accessibility, and there are several registers not available to the user which are used for temporary storage during instruction execution.
In many prior art data processors, one or more digital buses are used to interconnect a plurality of address and data registers to an arithmetic unit within the execution unit of the data processor. The digital buses are also generally used to interconnect the execution unit to the input/output terminals of the data processor for transmitting an address and for transmitting and receiving instructions and data. An example of a data processor using such a bus structure is the MC6800 integrated circuit microprocessor supplied by Motorola, Inc., which is described in U.S. Pat. No. 4,004,281, "Microprocessor Chip Register Bus Structure", invented by Bennett et al and assigned to the assignee of the present invention.
One technique for improving the speed and efficiency of a data processor is to provide for parallel operations. For example, a data computation might be performed according to a current instruction while an address computation might be simultaneously performed for computing a memory address where the next instruction will be found. The bus structure disclosed by U.S. Pat. No. 4,004,281 is not ideally suited for such parallel operations. One approach to allow for more parallel operations is simply to add another digital bus in parallel with existing digital buses for allowing an additional transfer to occur without interfering with the transfers already taking place on the existing digital buses. Such an approach is disclosed in co-pending application "Microprocessor Having Plural Internal Data Buses" invented by Daniels et al, bearing Ser. No. 939,741, and assigned to the assignee of the present invention. However, the addition of one or more digital buses increases the required chip area for implementing the data processor. Also, additional coupling MOSFET devices are required in order to enable or disable the input and output of each register and arithmetic unit to the additional digital buses, and additional control signals must be decoded by the data processor control circuitry for controlling the added coupling MOSFET devices.
It will be noted that many address computations will require an arithmetic unit capable of more than mere increment and decrement functions. Indexed and self-relative addressing modes require that an offset be added to or subtracted from an index register or program counter, respectively. Thus a bus structure which allows for parallel address and data computations must allow for individual arithmetic units for address and data computations.
It should be appreciated by those skilled in the art that a bus structure which allows for a highly dense data processor execution unit and which is adapted to allow for parallel operations within the execution unit is a significant improvement over the prior art.